翻訳と辞書
Words near each other
・ Instruction and Advice for the Young Bride
・ Instruction Concerning the Criteria for the Discernment of Vocations with regard to Persons with Homosexual Tendencies in view of their Admission to the Seminary and to Holy Orders
・ Instruction creep
・ Instruction cycle
・ Instruction in Latin
・ Instruction list
・ Instruction of Amenemope
・ Instruction of Ankhsheshonq
・ Instruction of Any
・ Instruction of Hardjedef
・ Instruction on transliteration of Belarusian geographical names with letters of Latin script
・ Instruction path length
・ Instruction pipelining
・ Instruction prefetch
・ Instruction register
Instruction scheduling
・ Instruction selection
・ Instruction set
・ Instruction set simulator
・ Instruction step
・ Instruction unit
・ Instruction window
・ Instruction-level parallelism
・ Instructional animation
・ Instructional capital
・ Instructional design
・ Instructional design coordinator
・ Instructional leadership
・ Instructional manipulation check
・ Instructional modeling


Dictionary Lists
翻訳と辞書 辞書検索 [ 開発暫定版 ]
スポンサード リンク

Instruction scheduling : ウィキペディア英語版
Instruction scheduling

In computer science, instruction scheduling is a compiler optimization used to improve instruction-level parallelism, which improves performance on machines with instruction pipelines. Put more simply, without changing the meaning of the code, it tries to
* Avoid pipeline stalls by rearranging the order of instructions.
* Avoid illegal or semantically ambiguous operations (typically involving subtle instruction pipeline timing issues or non-interlocked resources.)

The pipeline stalls can be caused by structural hazards (processor resource limit), data hazards (output of one instruction needed by another instruction) and control hazards (branching).
== Data hazards ==
Instruction scheduling is typically done on a single basic block. In order to determine whether rearranging the block's instructions in a certain way preserves the behavior of that block, we need the concept of a ''data dependency''. There are three types of dependencies, which also happen to be the three data hazards:
# Read after Write (RAW or "True"): Instruction 1 writes a value used later by Instruction 2. Instruction 1 must come first, or Instruction 2 will read the old value instead of the new.
# Write after Read (WAR or "Anti"): Instruction 1 reads a location that is later overwritten by Instruction 2. Instruction 1 must come first, or it will read the new value instead of the old.
# Write after Write (WAW or "Output"): Two instructions both write the same location. They must occur in their original order.
Technically, there is a fourth type, Read after Read (RAR or "Input"): Both instructions read the same location. Input dependence does not constrain the execution order of two statements, but it is useful in scalar replacement of array elements.
To make sure we respect the three types of dependencies, we construct a dependency graph, which is a directed graph where each vertex is an instruction and there is an edge from I1 to I2 if I1 must come before I2 due to a dependency. If loop-carried dependencies are left out, the dependency graph is a directed acyclic graph. Then, any topological sort of this graph is a valid instruction schedule. The edges of the graph are usually labelled with the latency of the dependence. This is the number of clock cycles that needs to elapse before the pipeline can proceed with the target instruction without stalling.

抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)
ウィキペディアで「Instruction scheduling」の詳細全文を読む



スポンサード リンク
翻訳と辞書 : 翻訳のためのインターネットリソース

Copyright(C) kotoba.ne.jp 1997-2016. All Rights Reserved.